package net.wangds.common.context;

/**
 * 上下文接口.
 * <p>
 * 上下文接口用于在不连续地调用程序时传递前后相关的内容。本接口中上下文内保存的内容
 * 均被称为状态，即将上下文理解为一个状态机。给定指定输入条件时，可以从状态机中获得相 同的输出。
 * </p>
 * <p>
 * 修改列表:
 * <ol>
 * <li>checkstyle, by wangds@gmail.com, 2016-01-16 下午18:13</li>
 * <li>补充注释. wangds@gmail.com 2013-10-12 22:00</li>
 * </ol>
 * </p>
 * 
 * @author wangds@gmail.com
 * @version 0.1
 */
public interface Context {

  /**
   * 从上下文中获得状态.
   * 
   * @param inputs
   *          输入条件.
   * @param <T>
   *          状态类型.
   * @return 与输入条件对应的状态.
   */
  <T> T status(Object... inputs) throws Exception;

  /**
   * 上下文所属模式. <li>checkstyle, by wangds@gmail.com, 2016-01-16 下午18:13</li>
   * 
   * @author wangds 2015年12月21日 下午7:47:38.
   * @return 模式名字.
   */
  default String getSchema() {
    return this.getClass().getName();
  }

}
